﻿using System;
using System.ServiceModel;
using System.Collections.Generic;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common.Exceptions.FaultContracts;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract
{
    /// <summary>
    /// Interface Faixa Corretagem
    /// </summary>
	[ExceptionShielding]
	[ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract", Name = "IFaixaCorretagem", SessionMode = SessionMode.Required)]
	public interface IFaixaCorretagem
	{
		#region MÃ©todos
		/// <summary>
        /// AlterarFaixaCorretagem
		/// </summary>
		/// <param name="request"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "AlterarFaixaCorretagem")]
		void AlterarFaixaCorretagem(DataContract.Request.FaixaCorretagemRequest request);
		
        /// <summary>
        /// AlterarFaixasCorretagens
        /// </summary>
        /// <param name="requests"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
        [TransactionRequired()]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "AlterarFaixasCorretagens")]
		void AlterarFaixasCorretagens(List<DataContract.Request.FaixaCorretagemRequest> requests);
		
        /// <summary>
        /// ConsultarFaixasCorretagens
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarFaixasCorretagens")]
		List<DataContract.Response.FaixaCorretagemResponse> ConsultarFaixasCorretagens(DataContract.Request.FiltroFaixaCorretagemRequest request);
		
        /// <summary>
        /// ExcluirFaixaCorretagem
        /// </summary>
        /// <param name="request"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ExcluirFaixaCorretagem")]
		void ExcluirFaixaCorretagem(DataContract.Request.FiltroFaixaCorretagemChaveRequest request);
		
        /// <summary>
        /// ExcluirFaixasCorretagens
        /// </summary>
        /// <param name="requests"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
        [TransactionRequired()]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ExcluirFaixasCorretagens")]
		void ExcluirFaixasCorretagens(List<DataContract.Request.FiltroFaixaCorretagemChaveRequest> requests);
		
        /// <summary>
        /// ExecutarTransacoes
        /// </summary>
        /// <param name="requestInclusoes"></param>
        /// <param name="requestAlteracoes"></param>
        /// <param name="requestExclusoes"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
        [TransactionRequired()]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ExecutarTransacoes")]
		void ExecutarTransacoes(List<DataContract.Request.FaixaCorretagemRequest> requestInclusoes,List<DataContract.Request.FaixaCorretagemRequest> requestAlteracoes,List<DataContract.Request.FiltroFaixaCorretagemChaveRequest> requestExclusoes);
		
        /// <summary>
        /// IncluirFaixaCorretagem
        /// </summary>
        /// <param name="request"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "IncluirFaixaCorretagem")]
		void IncluirFaixaCorretagem(DataContract.Request.FaixaCorretagemRequest request);
		
        /// <summary>
        /// IncluirFaixasCorretagens
        /// </summary>
        /// <param name="requests"></param>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
        [TransactionRequired()]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "IncluirFaixasCorretagens")]
		void IncluirFaixasCorretagens(List<DataContract.Request.FaixaCorretagemRequest> requests);
		
        /// <summary>
        /// ObterFaixaCorretagem
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObterFaixaCorretagem")]
		DataContract.Response.FaixaCorretagemResponse ObterFaixaCorretagem(DataContract.Request.FiltroFaixaCorretagemChaveRequest request);
		
        /// <summary>
        /// ObterUltimaFaixaCorretagem
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
		[FaultContract(typeof(LicensingFault))]
		[FaultContract(typeof(InvalidSessionFault))]
		[FaultContract(typeof(AccessIsDeniedFault))]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
        [OperationLog]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObterUltimaFaixaCorretagem")]
		DataContract.Response.FaixaCorretagemResponse ObterUltimaFaixaCorretagem(DataContract.Request.FiltroFaixaCorretagemChaveRequest request);
		#endregion
		
	}
}

